import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Equipamento extends Entity {
    protected Date data;
    protected String custo, preco, codigo;
    protected char tipo;
    
    public Equipamento(){
        this.codigo = "XXX0000";
        this.data = new Date(0);
        this.custo = "R$0,00";
        this.preco = "R$0,00";
        this.tipo = '0';
    }
    
    public Equipamento(String codigo){
        this.codigo = codigo;
        this.data = new Date(0);
        this.custo = "R$0,00";
        this.preco = "R$0,00";
        this.tipo = '0';
    }

    public Equipamento(String codigo, Date data, String custo, String preco, int tipo) {
        this.codigo = codigo;
        this.data = data;
        this.custo = custo;
        this.preco = preco;
        switch(tipo){
            case 0: this.tipo = 'C';
                break;
            case 1: this.tipo = 'B';
                break;
            case 2: this.tipo = 'P';
                break;
            case 3: this.tipo = 'E';
                break;
            default: this.tipo = '0';
        }
    }

    String getCusto() {
        return custo;
    }
    
    @Override
    public String tableName(){
        return "cooperativa.equipamento";
    }

    @Override
    public String attributes() {
        return "data_compra, codigo, preco, custo_manter, tipo";
    }

    @Override
    public String numAtt() {
        return "?, ?, ?, ?, ?";
    }

    @Override
    public void setInsert(PreparedStatement st) {
        try {
            st.setDate(1, data);
            st.setString(2, codigo);
            st.setString(3, preco);
            st.setString(4, custo);
            st.setString(5, tipo +"");
        } catch (SQLException ex) {
            Logger.getLogger(Entity.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    public String getCodigo() {
        return codigo;
    }

    @Override
    public void setAtt(ResultSet rs) {
        try {
            rs.next();
            data = rs.getDate(1);
            preco = rs.getString(2);
            custo = rs.getString(3);
            tipo = rs.getString(4).charAt(0);
        } catch (SQLException ex) {
            Logger.getLogger(Entity.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    public String attLessCod() {
        return "cpf=?, nome=?";
    }

    @Override
    public void setUpdate(PreparedStatement st) {
        try {
            st.setString(3, codigo);
            st.setDate(1, data);
            st.setString(2, custo);
        } catch (SQLException ex) {
            Logger.getLogger(Entity.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    String getKey() {
        return "codigo=?";
    }

    @Override
    public void setKey(PreparedStatement st) {
        try {
            st.setString(1, codigo);
        } catch (SQLException ex) {
            Logger.getLogger(EntradaMaterial.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    public String getCollums() {
        return "data_compra, preco, custo_manter, tipo";
    }

    public Date getData() {
        return data;
    }

    String print() {
        return "Código: "+ codigo +" \n"
                + "Data de Aquisição: "+ data +" \n"
                + "Preco: "+ preco +" \n"
                + "Custo Mensal: "+ custo +" \n"
                + "Tipo: "+ tipo;
    }
    
}